window.onload = function () {
    editor.setOpt({
        emotionLocalization: false,
    });

    emotion.SmileyPath = editor.options.emotionLocalization === true ? 'images/' : 'http://img.baidu.com/hi/';
    emotion.SmileyBox = createTabList(emotion.tabNum);
    emotion.tabExist = createArr(emotion.tabNum);

    initImgName();
    initEvtHandler('tabHeads');
};

function initImgName() {
    for (var pro in emotion.SmilmgName) {
        var tempName = emotion.SmilmgName[pro],
            tempBox = emotion.SmileyBox[pro],
            tempStr = '';

        if (tempBox.length) return;
        for (var i = 1; i <= tempName[1]; i++) {
            tempStr = tempName[0];
            if (i < 10) tempStr = tempStr + '0';
            tempStr = tempStr + i + '.gif';
            tempBox.push(tempStr);
        }
    }
}

function initEvtHandler(conId) {
    var tabHeads = $G(conId);
    for (var i = 0, j = 0; i < tabHeads.childNodes.length; i++) {
        var tabObj = tabHeads.childNodes[i];
        if (tabObj.nodeType == 1) {
            domUtils.on(
                tabObj,
                'click',
                (function (index) {
                    return function () {
                        switchTab(index);
                    };
                })(j),
            );
            j++;
        }
    }
    switchTab(0);
    $G('tabIconReview').style.display = 'none';
}

function InsertSmiley(url, evt) {
    var obj = {
        src: editor.options.emotionLocalization ? editor.options.UEDITOR_HOME_URL + 'dialogs/emotion/' + url : url,
    };
    obj._src = obj.src;
    editor.execCommand('insertimage', obj);
    if (!evt.ctrlKey) {
        dialog.popup.hide();
    }
}

function switchTab(index) {
    autoHeight(index);
    if (emotion.tabExist[index] == 0) {
        emotion.tabExist[index] = 1;
        createTab('tab' + index);
    }
    //获取呈现元素句柄数组
    var tabHeads = $G('tabHeads').getElementsByTagName('span'),
        tabBodys = $G('tabBodys').getElementsByTagName('div'),
        i = 0,
        L = tabHeads.length;
    //隐藏所有呈现元素
    for (; i < L; i++) {
        tabHeads[i].className = '';
        tabBodys[i].style.display = 'none';
    }
    //显示对应呈现元素
    tabHeads[index].className = 'focus';
    tabBodys[index].style.display = 'block';
}

function autoHeight(index) {
    var iframe = dialog.getDom('iframe'),
        parent = iframe.parentNode.parentNode;
    switch (index) {
        case 0:
            iframe.style.height = '380px';
            parent.style.height = '392px';
            break;
        case 1:
            iframe.style.height = '220px';
            parent.style.height = '232px';
            break;
        case 2:
            iframe.style.height = '260px';
            parent.style.height = '272px';
            break;
        case 3:
            iframe.style.height = '300px';
            parent.style.height = '312px';
            break;
        case 4:
            iframe.style.height = '140px';
            parent.style.height = '152px';
            break;
        case 5:
            iframe.style.height = '260px';
            parent.style.height = '272px';
            break;
        case 6:
            iframe.style.height = '230px';
            parent.style.height = '242px';
            break;
        default:
    }
}

function createTab(tabName) {
    var faceVersion = '?v=1.1', //版本号
        tab = $G(tabName), //获取将要生成的Div句柄
        imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], //获取显示表情和预览表情的路径
        positionLine = 11 / 2, //中间数
        iWidth = (iHeight = 35), //图片长宽
        iColWidth = 3, //表格剩余空间的显示比例
        tableCss = emotion.imageCss[tabName],
        cssOffset = emotion.imageCssOffset[tabName],
        textHTML = ['<table class="smileytable">'],
        i = 0,
        imgNum = emotion.SmileyBox[tabName].length,
        imgColNum = 11,
        faceImage,
        sUrl,
        realUrl,
        posflag,
        offset,
        infor;

    for (; i < imgNum; ) {
        textHTML.push('<tr>');
        for (var j = 0; j < imgColNum; j++, i++) {
            faceImage = emotion.SmileyBox[tabName][i];
            if (faceImage) {
                sUrl = imagePath + faceImage + faceVersion;
                realUrl = imagePath + faceImage;
                posflag = j < positionLine ? 0 : 1;
                offset = cssOffset * i * -1 - 1;
                infor = emotion.SmileyInfor[tabName][i];

                textHTML.push(
                    '<td  class="' +
                        tableCss +
                        '"   border="1" width="' +
                        iColWidth +
                        '%" style="border-collapse:collapse;" align="center"  bgcolor="transparent" onclick="InsertSmiley(\'' +
                        realUrl.replace(/'/g, "\\'") +
                        '\',event)" onmouseover="over(this,\'' +
                        sUrl +
                        "','" +
                        posflag +
                        '\')" onmouseout="out(this)">',
                );
                textHTML.push('<span>');
                textHTML.push(
                    '<img  style="background-position:left ' +
                        offset +
                        'px;" title="' +
                        infor +
                        '" src="' +
                        emotion.SmileyPath +
                        (editor.options.emotionLocalization ? '0.gif" width="' : 'default/0.gif" width="') +
                        iWidth +
                        '" height="' +
                        iHeight +
                        '"></img>',
                );
                textHTML.push('</span>');
            } else {
                textHTML.push('<td width="' + iColWidth + '%"   bgcolor="#FFFFFF">');
            }
            textHTML.push('</td>');
        }
        textHTML.push('</tr>');
    }
    textHTML.push('</table>');
    textHTML = textHTML.join('');
    tab.innerHTML = textHTML;
}

function over(td, srcPath, posFlag) {
    td.style.backgroundColor = '#ACCD3C';
    $G('faceReview').style.backgroundImage = 'url(' + srcPath + ')';
    if (posFlag == 1) $G('tabIconReview').className = 'show';
    $G('tabIconReview').style.display = 'block';
}

function out(td) {
    td.style.backgroundColor = 'transparent';
    var tabIconRevew = $G('tabIconReview');
    tabIconRevew.className = '';
    tabIconRevew.style.display = 'none';
}

function createTabList(tabNum) {
    var obj = {};
    for (var i = 0; i < tabNum; i++) {
        obj['tab' + i] = [];
    }
    return obj;
}

function createArr(tabNum) {
    var arr = [];
    for (var i = 0; i < tabNum; i++) {
        arr[i] = 0;
    }
    return arr;
}
